Packet forwarding is a process of relaying packets from one communication link to another by nodes in a network. A packet is a formatted unit of data that typically contains control information and payload data. Control information may include: source and destination IP addresses, error detection codes like checksums, sequencing information, etc. Control information is typically found in packet headers and trailers, with payload data in between. Network nodes may take form in one or more routers, one or more bridges, one or more switches, or any other suitable communications processing device.
At network nodes where multiple outgoing links are available, the choice of link to use for packet forwarding requires a decision process that, while simple in concept, can be complex. Since packet forwarding decisions are handled by nodes, the total time required for this can become a major limiting factor in overall network performance.
Segment routing (SR) is one mechanism that nodes can use to forward packets. Segment routing involves attaching one or more segment IDs (segment IDs) to a packet. Segment routing capable nodes determine how to forward a packet based on the segment IDs. This stands in stark contrast to traditional Internet Protocol (IP) routing in which packet forwarding decisions are made using IP addresses contained within packets. Since nodes use segment IDs, there is no need for nodes to examine the contents (e.g., IP addresses) of packets to make packet forwarding decisions.
However, one constraint of classic SR networks is that all nodes in a given SR network must be able to determine what segment is referred to by a given segment ID. That is, all nodes use a common range of segment IDs, and a segment ID assigned to a particular segment is allocated from that range and must mean the same thing (identify the particular segment) to all nodes in the SR network. However, it may be inconvenient or impossible for some nodes to utilize the common range of segment IDs, for example due to varying capabilities of the nodes. If a node in the SR network does not recognize and use the common range of segment IDs used by other nodes the node may be unable to use SR to forward packets.